This module defines the schemas and interfaces used by the Weave trace server.

CallSchema

The schema for a Call object in Weave.
class CallSchema:
    id: str                          # Unique identifier for the call
    project_id: Optional[str]        # Associated project identifier
    op_name: str                     # Name of the operation
    display_name: Optional[str]      # User-friendly display name
    trace_id: str                    # Trace this call belongs to
    parent_id: Optional[str]         # Parent call ID (for nested calls)
    started_at: datetime             # When the call started
    ended_at: Optional[datetime]     # When the call ended
    exception: Optional[str]         # Exception message if failed
    attributes: Dict[str, Any]       # Custom attributes
    inputs: Dict[str, Any]          # Input parameters
    output: Optional[Any]           # Return value
    summary: Optional[Dict[str, Any]] # Summary metrics
    wb_user_id: Optional[str]       # W&B user ID
    wb_run_id: Optional[str]        # W&B run ID
    deleted_at: Optional[datetime]   # Soft deletion timestamp

Field Descriptions

Core Fields

  • id: UUID that uniquely identifies this call
  • project_id: The W&B project this call belongs to (format: “entity/project”)
  • op_name: The name of the operation being called (can be a reference)
  • display_name: Optional human-readable name for the call

Trace Hierarchy

  • trace_id: Groups related calls into a single trace
  • parent_id: Links child calls to their parent, forming a tree structure

Timing

  • started_at: ISO 8601 timestamp when execution began
  • ended_at: ISO 8601 timestamp when execution completed
  • deleted_at: If set, indicates the call was soft-deleted

Data

  • inputs: Dictionary of input parameters passed to the function
  • output: The return value of the function (if successful)
  • exception: Error message if the call failed
  • attributes: User-defined metadata (read-only during execution)
  • summary: Post-execution metrics and computed values

Integration

  • wb_user_id: Links to W&B user who initiated the call
  • wb_run_id: Links to W&B run for experiment tracking

CallsFilter

Filter criteria for querying calls.
class CallsFilter:
    op_names: Optional[List[str]]      # Filter by operation names
    input_refs: Optional[List[str]]    # Filter by input references
    output_refs: Optional[List[str]]   # Filter by output references
    parent_ids: Optional[List[str]]    # Filter by parent call IDs
    trace_ids: Optional[List[str]]     # Filter by trace IDs
    call_ids: Optional[List[str]]      # Filter by specific call IDs
    trace_roots_only: Optional[bool]   # Only return root calls
    wb_user_ids: Optional[List[str]]   # Filter by W&B user IDs
    wb_run_ids: Optional[List[str]]    # Filter by W&B run IDs

Usage Example

from weave import WeaveClient

client = WeaveClient("my-entity/my-project")

# Find all calls to a specific operation
filter = CallsFilter(
    op_names=["process_document"],
    trace_roots_only=True
)

calls = client.get_calls(filter=filter)

Query Expressions

Advanced filtering using query expressions:
# Find calls with specific input values
calls = client.get_calls(
    filter=CallsFilter(),
    query={
        "$expr": {
            "$and": [
                {"$eq": [{"$getField": "inputs.model"}, "gpt-4"]},
                {"$gt": [{"$getField": "summary.total_tokens"}, 1000]}
            ]
        }
    }
)

Calculated Fields

The following fields are calculated by the server:

Status

Derived from the presence of exception and ended_at:
  • "running": Call has started but not ended
  • "success": Call ended without exception
  • "error": Call ended with exception

Duration

Calculated as the difference between ended_at and started_at in seconds.

Costs

Aggregated from cost tracking calls. Includes:
  • Token usage
  • API costs
  • Custom cost metrics
The trace server interface is designed to be flexible and extensible. Custom fields can be added to attributes and summary without schema changes.